Conventional delivery of video programming involves distributing video content to users via terrestrial, cable, and satellite systems. With the advent of faster Internet connection speeds and greater bandwidth, increasing numbers of users are accessing video content online. Video on demand systems allow users to access video content over a global communications network, such as the Internet, and watch selected content on their computers, portable computing devices, and the like. Typical video on demand, or online video, services stream this video content to users over the network for viewing while the video is being transferred to their computing devices.
Much like conventional video delivery, advertising provides a major source of revenue for online video services. These online services often provide short streaming video clips with advertisements inserted at the beginning of the desired video content. Because a video stream is generated at the website's server, the online video service can exercise full control over the insertion of video ads into the stream. Moreover, the user cannot circumvent watching streaming video ads because their insertion is server-based.
A major limitation on streaming video is that the quality of the video content is limited by the bandwidth of the user's connection. This bandwidth can be quite constrained and, thus, the video quality tends to be limited. Recently, some video content providers allow users to download video content for viewing on their computing devices after completion of the download. Downloading a video file in its entirety to the user's computing device allows the user to obtain higher quality video content and, thus, improves user experience.
Although downloading video content can provide certain advantages over streaming video, it presents problems in the enforcement of ad delivery and insertion. In particular, ads that are inserted locally are much more vulnerable to circumvention by the user. Thus, the mechanism used to insert ads must be immune to circumvention by the user.